package com.xuhao.examai.domain.repositories;

import com.xuhao.examai.domain.models.User;
import java.util.List;
import java.util.Optional;

/**
 * 用户仓储接口
 */
public interface UserRepository {

	/**
	 * 保存用户
	 */
	User save(User user);

	/**
	 * 根据ID查找用户
	 */
	Optional<User> findById(Long id);

	/**
	 * 根据用户名查找用户
	 */
	Optional<User> findByUsername(String username);

	/**
	 * 根据邮箱查找用户
	 */
	Optional<User> findByEmail(String email);

	/**
	 * 根据角色查找用户列表
	 */
	List<User> findByRole(String role);

	/**
	 * 查找所有用户
	 */
	List<User> findAll();

	/**
	 * 删除用户
	 */
	void deleteById(Long id);

	/**
	 * 检查用户名是否存在
	 */
	boolean existsByUsername(String username);

	/**
	 * 检查邮箱是否存在
	 */
	boolean existsByEmail(String email);

	/**
	 * 检查用户是否存在
	 */
	boolean existsById(Long id);

	/**
	 * 根据关键字查找用户
	 */
	List<User> findByKeyword(String keyword);

	/**
	 * 根据角色和关键字查找用户
	 */
	List<User> findByRoleAndKeyword(String role, String keyword);
}